Image data captured by an image sensor or received from other data sources is often processed in an image processing pipeline before further processing or consumption. For example, raw image data may be corrected, filtered, or otherwise modified before being provided to subsequent components such as a video encoder. To perform corrections or enhancements for captured image data, various components, unit stages or modules may be employed.
Such an image processing pipeline may be structured so that corrections or enhancements to the captured image data can be performed in an expedient way without consuming other system resources. Although many image processing algorithms may be performed by executing software programs on a central processing unit (CPU), execution of such programs on the CPU would consume significant bandwidth of the CPU and other peripheral resources as well as increase power consumption. Hence, image processing pipelines are often implemented as a hardware component separate from the CPU and dedicated to perform one or more image processing algorithms.
Raw image data may contain visual anomalies (e.g., due to rolling shutter effect) that can cause the resulting output image to appear distorted. For example, if a user causes a device to deviate from a fixed origin while capturing an image (e.g., pan, tilt, zoom, etc.), the resulting output image may contain unintended skew within certain portions of the image. To correct this distortion, a warper can transform pixels of an input image into an output image. However, the degree to which the warper can correct certain types of distortion, such as rotational distortion, may be limited.